隐式类型本地变量
编写 C# 代码时,编译器可以提供很多便利。它可以按其初始化后所得的值推断变量的数据类型。
什么是隐式类型本地变量
隐式类型本地变量使用 var 关键字进行创建,该关键字指示 C# 编译器去推断类型。推断出类型后,它与使用实际数据类型一样,也可用于声明变量。
在下面的示例中,我们将使用 var 关键字而不是 string 关键字来声明变量。
var message = "Hello world!";
由于变量 message 会被立即设置为字符串值 "Hello World!",因此 C# 编译器了解其意向并将每个消息实例视为 string 类型实例。
事实上,message 变量的类型为字符串,并且永远无法更改。此处我们尝试将 message 设置为文本十进制值 10.0m。
var message = "Hello World!";
message = 10.0m;
其他编程语言采用不同的方式使用 var 关键字。在 C# 中,无论是使用实际数据类型还是让编译器推断数据类型,编译器都将以静态方式键入变量。换句话说,声明时类型是锁定的,因此永远无法保存不同数据类型的值。
只能在初始化变量时使用 var 关键字
请务必了解,var 关键字依赖用于初始化变量的值。如果尝试在不初始化变量的情况下使用 var 关键字,则在试图编译代码时会收到错误消息。
var message;
如果尝试运行此代码,在编译时将看到以下输出:
(1,5): error CS0818: Implicitly-typed variables must be initialized
为什么使用 var 关键字
var 关键字已被 C# 社区广泛采用,因此,如果你查看书籍或联机中的代码示例,很有可能会看到使用的是 var 关键字,而不是实际的数据类型名称。因此,我们想确保在此模块中将它引入。
但 var 关键字在 C# 中具有重要用途。由于在编写高级代码之前你可能不甚了解,因此在某些情况下,初始化变量时,数据类型可能不太明显。实际上,在某些情况下,C# 可能会为代码提供一种新的数据类型,并可能无法提前为其指定可预测的命名。再说一次,这是 C# 的一项高级功能,我们将在其他模块中进行介绍。
开始之际,我们建议声明变量时继续使用实际的数据类型名称。声明变量时使用数据类型有助于你有目的性地编写代码。
概括
下面是此单元中有关 var 关键字和隐式类型本地变量的关键要点:
var关键字指示编译器根据变量的初始化值来推断变量的数据类型。- 阅读其他人的代码时,你可能会看到
var关键字。但是,你应尽可能使用实际的数据类型。